home *** CD-ROM | disk | FTP | other *** search
Wrap
'************************************************************************** '* SimTower for Windows Demo Setup script '* '* by Kevin O'Hare '* '* (C) 1995 Maxis Inc. '* '* Some portions (c) 1994 Microsoft Corp. '************************************************************************** '$DEFINE DEBUG ''Define for script development/debugging ' This should set a flag if the command line /NO_CHECK was included ' This must occur before calling setupapi, or any command line args get ' lost GLOBAL Dont_Check_For_Space COMMAND$=UCASE$(COMMAND$) IF INSTR(COMMAND$, "NO_CHECK") > 0 THEN Dont_Check_For_Space = 1 sz$=MID$(COMMAND$,1,(INSTR(COMMAND$,"NO_CHECK")-1)) COMMAND$=sz$ END IF ' End checking '$INCLUDE 'setupapi.inc' '$INCLUDE 'msdetect.inc' ''Dialog ID's CONST WELCOME = 100 CONST ASKQUIT = 200 CONST DESTPATH = 300 CONST EXITFAILURE = 400 CONST REGNAG = 500 CONST READMENAG = 501 CONST SIXTEENCOLS = 502 CONST EXITQUIT = 600 CONST EXITSUCCESS = 700 CONST APPHELP = 900 CONST MODEHELP = 904 CONST TOOBIG = 6300 CONST BADPATH = 6400 CONST PATHEXISTS = 6500 CONST CONFNAME = 7300 CONST GETUSER = 7500 CONST BADNAME = 7700 CONST BADVIDEO = 7701 CONST BADCOMPANY = 7702 CONST BADMODE = 7704 '' Some Constant Values for Maximized Install Window CONST WS_VISIBLE =&H10000000 CONST WS_BORDER =&H00800000 CONST WS_CLIPCHILDREN =&H02000000 CONST GWL_STYLE = -16 CONST SW_SHOWMAXIMIZED = 3 '' End Maximized Window Install Constants '' Bitmap ID CONST LOGO = 1 GLOBAL DEST$ ''Default destination directory. GLOBAL USERNAME$ ''User registration name. GLOBAL COMPANYNAME$ ''Company Name GLOBAL WINDIR$ GLOBAL WINSYSDIR$ GLOBAL WING1$ GLOBAL SrcDir$ '' Global directory strings WINDIR$ = GetWindowsDir() WINSYSDIR$ = GetWindowsSysDir () '' Global Source Drive string SrcDir$ = GetSymbolValue("STF_SRCDIR") DECLARE SUB Install DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER '' Some Subroutine Declarations for Maximized Install Window DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%, iShow%) AS INTEGER DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG '' End Declarations for Maximized Window Install INIT: '' This is where we set it to maximize the install window hWnd%=HwndFrame() i1&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN) j1%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED) '' End of Maximize stuff CUIDLL$ = "mscuistf.dll" ''Custom user interface dll HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure SetBitmap CUIDLL$, LOGO SetTitle " SimTower(TM) for Windows Demo Setup" szInf$ = GetSymbolValue("STF_SRCINFPATH") IF szInf$ = "" THEN szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF" END IF ReadInfFile szInf$ DEST$ = "C:\SIMTDEMO" '$IFDEF DEBUG i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal WinDrive$ = MID$(GetWindowsDir, 1, 1) IF IsDriveValid(WinDrive$) = 0 THEN i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) GOTO QUIT END IF '$ENDIF ''DEBUG IF Dont_Check_For_Space = 1 THEN i% = DoMsgBox("NO_CHECK specified, skipping Free Space and Valid Drive Checks. I will not be held responsible for my actions!", "Verification Status", MB_TASKMODAL+MB_ICONHAND+MB_OK) END IF '' This just tosses up a nice welcome screen WELCOME: sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN UIPop 1 ELSE GOSUB ASKQUIT GOTO WELCOME END IF '' Check the Windows mode - if user isn't not in Enhanced mode, quit CHECKMODE: i% = GetWindowsMode () IF i% < 2 THEN sz$ = UIStartDLG(CUIDLL$, BADMODE, "FInfoDlgProc", MODEHELP, HELPPROC$) IF SZ$ = "CONTINUE" THEN UIPop 1 ELSE UIPop 1 GOSUB ASKQUIT GOTO CHECKMODE END IF END IF '' Input user name and company name GETTHEUSER: '' KO 6/2/95 - added the next line to skip user/company name input GOTO GETPATH sz$ = UIStartDlg(CUIDLL$, GETUSER, "FNameOrgDlgProc", APPHELP, HELPPROC$) USERNAME$ = GetSymbolValue("NameOut") COMPANYNAME$ = GetSymbolValue("OrgOut") IF sz$ = "CONTINUE" THEN IF LEN(USERNAME$) < 1 OR LEN(USERNAME$) > 22 OR MID$(USERNAME$,1,1) = " " THEN GOSUB BADNAME GOTO GETTHEUSER END IF IF LEN(COMPANYNAME$) > 22 OR MID$(COMPANYNAME$,1,1) = " " THEN GOSUB BADCOMPANY GOTO GETTHEUSER END IF UIPop 1 ELSEIF sz$ = "REACTIVATE" THEN GOTO GETTHEUSER ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO WELCOME ELSE GOSUB ASKQUIT GOTO GETTHEUSER END IF GETPATH: SetSymbolValue "EditTextIn", DEST$ SetSymbolValue "EditFocus", "END" GETPATHL1: sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$) DEST$ = GetSymbolValue("EditTextOut") ''Compute this later!!!! - KO ''(using GetCopyListCost()) required& = 4000000 IF sz$ = "CONTINUE" THEN IF MID$(DEST$, LEN(DEST$), 1) = "\" THEN DEST$ = MID$(DEST$,1,LEN(DEST$) - 1) END IF UIPop 1 ' Check space requirements IF Dont_Check_For_Space = 0 THEN IF IsDirWritable(DEST$) = 0 THEN GOSUB BADPATH GOTO GETPATHL1 END IF ''temp$ = "Free Space is " + str$(GetFreeSpaceForDrive(MID$(DEST$,1,1))) ''i% = DoMsgBox(temp$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND) ' Check free space IF GetFreeSpaceForDrive(MID$(DEST$,1,1)) < required& THEN GOSUB TOOBIG GOTO GETPATHL1 END IF ' Does it exist? IF DoesFileExist(DEST$ + "\SIMTDEMO.EXE", FemExists) = 1 THEN SetSymbolValue "ConfirmTextIn", DEST$ sz$ = UIStartDlg(CUIDLL$, PATHEXISTS, "FConfirmDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPopAll ERROR STFQUIT ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO GETTHEUSER ELSEIF sz$ = "REACTIVATE" THEN GOTO CONFIRMALL ELSE UIPop 1 END IF END IF END IF ' (end of >IF sz$ = "CONTINUE"<) ELSEIF sz$ = "REACTIVATE" THEN GOTO GETPATHL1 ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO GETTHEUSER ELSE GOSUB ASKQUIT GOTO GETPATH END IF CONFIRMALL: SetSymbolValue "ConfirmTextIn", USERNAME$ AddListItem "ConfirmTextIn", COMPANYNAME$ AddListItem "ConfirmTextIn", DEST$ sz$ = UIStartDlg(CUIDLL$, CONFNAME, "FConfirmDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPopAll ERROR STFQUIT ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO GETTHEUSER ELSEIF sz$ = "REACTIVATE" THEN GOTO CONFIRMALL ELSE UIPop 1 END IF DOWING: ' This portion installs the DVA.386 driver on machines in Enhanced Mode IF VflatdPresent() = 0 THEN CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite bInstallDVA% = 1 END IF WING1$ = "WinG" RemoveIniSection "WIN.INI", wing1$, CmoNone DOINSTALL: Install QUIT: ON ERROR GOTO ERRQUIT IF ERR = 0 THEN dlg% = EXITSUCCESS ELSEIF ERR = STFQUIT THEN dlg% = EXITQUIT ELSE dlg% = EXITFAILURE END IF QUITL1: sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO QUITL1 END IF UIPop 1 END ERRQUIT: i% = DoMsgBox("Setup sources were corrupted! Please call Maxis Technical Support.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND) END BADPATH: sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO BADPATH END IF UIPop 1 RETURN BADNAME: sz$ = UIStartDlg(CUIDLL$, BADNAME, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO BADNAME END IF UIPop 1 RETURN BADCOMPANY: sz$ = UIStartDlg(CUIDLL$, BADCOMPANY, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO BADCOMPANY END IF UIPop 1 RETURN TOOBIG: sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO TOOBIG END IF UIPop 1 RETURN ASKQUIT: sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPopAll ERROR STFQUIT ELSEIF sz$ = "REACTIVATE" THEN GOTO ASKQUIT ELSE UIPop 1 END IF RETURN '** '** Purpose: '** Builds the copy list and performs all installation operations. '** Arguments: '** none. '** Returns: '** none. '************************************************************************* SUB Install STATIC ClearCopyList AddSectionFilesToCopyList "Files", SrcDir$, DEST$ AddSectionFilesToCopyList "WINDOWS", SrcDir$, WINDIR$ AddSectionFilesToCopyList "SYSTEM", SrcDir$, WINSYSDIR$ '' KO 6/2/95 - remove this before ship! DumpCopyList "C:\TEMP.TXT" '' Do the copy CopyFilesInCopyList '' Create Maxis group and SimTower, readme and help icons '' KO 6/2/95 - changed first item to SimTower for Windows Demo, and '' removed the ReadMe and Help items CreateProgmanGroup "Maxis", "", cmoNone ShowProgmanGroup "Maxis", 1, cmoNone CreateProgmanItem "Maxis", "SimTower for Windows Demo", DEST$ + "\SIMTDEMO.EXE", "", cmoOverwrite '' CreateProgmanItem "Maxis", "SimTower Read Me", DEST$ + "\README.WRI", "", cmoOverwrite '' CreateProgmanItem "Maxis", "SimTower Help", DEST$ + "\SIMTOWER.HLP", "", cmoOverwrite ''** CreateProgmanItem "Maxis", "Register Electronically", DEST$ + "\EREG.EXE", "", cmoOverwrite '' KO 6/2/95 - removed all SIMTOWER.INI file stuff ''RemoveIniSection DEST$+"\SIMTOWER.INI", "Sound", CmoNone '' ''CreateSysIniKeyValue DEST$ + "\SIMTOWER.ini", "Sound", "AllSounds", "1", cmoOverwrite ''CreateSysIniKeyValue DEST$ + "\SIMTOWER.ini", "Sound", "Elevator", "1", cmoOverwrite ''CreateSysIniKeyValue DEST$ + "\SIMTOWER.ini", "Sound", "Events", "1", cmoOverwrite ''CreateSysIniKeyValue DEST$ + "\SIMTOWER.ini", "Sound", "Background", "1", cmoOverwrite END SUB '** '** Purpose: '** Appends a file name to the end of a directory path, '** inserting a backslash character as needed. '** Arguments: '** szDir$ - full directory path (with optional ending "\") '** szFile$ - filename to append to directory '** Returns: '** Resulting fully qualified path name. '************************************************************************* FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING IF szDir$ = "" THEN MakePath = szFile$ ELSEIF szFile$ = "" THEN MakePath = szDir$ ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN MakePath = szDir$ + szFile$ ELSE MakePath = szDir$ + "\" + szFile$ END IF END FUNCTION